using System;
using System.Collections.Generic;
using DM.Entity;
using System.Data.SqlClient;

namespace DM.DAO
{
    public class TepDAO:BaseDao<Tep>
    {
        /// <summary>
        /// Lấy ra 1 đối tượng tệp bằng Mã tệp
        /// </summary>
        /// <param name="id">Mã tệp</param>
        /// <returns>Tep Entity</returns>
        public override Tep Get(int id)
        {
            Tep tep = new Tep();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getTepByMa", id);
            try
            {
                if (dataReader.Read())
                {
                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return tep;
        }

        public List<Tep> Get()
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getTepAll");
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            
            return list;
        }

        /// <summary>
        /// Lấy ra 1 đối tượng Tep bằng tên của tệp đó (Đường dẫn tệp)
        /// </summary>
        /// <param name="name">Tên tệp</param>
        /// <returns>Tep Entity</returns>
        public override Tep Get(string name)
        {
            Tep tep = new Tep();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getTepByName", name);
            try
            {
                if (dataReader.Read())
                {
                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return tep;
        }



        /// <summary>
        /// Insert một đối tượng Tep vào cơ sở dữ liêu
        /// </summary>
        /// <param name="t">Tep Entity</param>
        /// <returns>Trả về giá trị 0</returns>
        public override int Insert(Tep t)
        {
            SqlHelper.ExecuteNonQuery(SqlHelper.DMConnnectString, "InsertTep", t.TenBaoCao, t.TenFile, t.Quy, t.Nam, t.IsTN);
            return 0;
        }



        /// <summary>
        /// Update Tep lên CSDL
        /// </summary>
        /// <param name="t">Tep Entity</param>
        /// <returns>Trả về giá trị 0</returns>
        public override int Update(Tep t)
        {
            SqlHelper.ExecuteNonQuery(SqlHelper.DMConnnectString, "UpdateTep", t.Ma, t.TenBaoCao, t.TenFile, t.Quy, t.Nam, t.IsTN);
            return 0;
        }



        /// <summary>
        /// Update một danh sách têp
        /// </summary>
        /// <param name="ts"></param>
        /// <returns></returns>
        public override int Update(List<Tep> ts)
        {
            throw new NotImplementedException();
        }



        /// <summary>
        /// Xóa têp trong CSDL bằng MaTep
        /// </summary>
        /// <param name="id">Mã tệp</param>
        /// <returns>Trả về giá trị 0</returns>
        public override int Delete(string id)
        {
            //SqlHelper.ExecuteNonQuery(SqlHelper.DMConnnectString, "DeleteTepByMa", id);
            return 0;
        }

        /// <summary>
        /// Xóa tệp trong CSDL bằng id
        /// </summary>
        /// <param name="id"></param>
        public void Delete(int id)
        {
            SqlHelper.ExecuteNonQuery(SqlHelper.DMConnnectString, "DeleteTepByMa", id);
        }

        /// <summary>
        /// Lấy ra 1 list tat ca các tệp thuộc loại báo cáo thường niên (sắp xếp theo ngày tháng giảm dần)
        /// </summary>
        /// <returns>List Tep</returns>
        public List<Tep> GetTepBCTN()
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getTepBCTN");
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }



        /// <summary>
        /// Lấy ra một danh sách các tệp báo thường niên theo năm (Năm giảm dần)
        /// </summary>
        /// <param name="nam"></param>
        /// <returns></returns>
        public List<Tep> GetTepBCTN(int nam)
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getBCTNByNam",nam);
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }

            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }



        /// <summary>
        /// Lấy ra một danh sách các tệp báo cáo thường niên theo quý và theo năm (Sắp xếp theo năm và quý giảm dần)
        /// </summary>
        /// <param name="quy"></param>
        /// <param name="nam"></param>
        /// <returns></returns>
        public List<Tep> GetTepBCTN( int quy, int nam)
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getBCTNByQuyNam",quy,nam);
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }



        /// <summary>
        /// Lấy ra danh sách tất cả các tệp báo cáo tài chính  (Ngày tháng giảm dần)
        /// </summary>
        /// <returns></returns>
        public List<Tep> GetTepBCTC()
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getTepBCTC");
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }



        /// <summary>
        /// Lay ra tat ca cac bao cao tai chinh theo nam 
        /// </summary>
        /// <param name="nam"></param>
        /// <returns></returns>
        public List<Tep> GetTepBCTC(int nam)
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getBCTCNam",nam);
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }



        /// <summary>
        /// Lấy ra danh sách tất cả các báo cáo tài chính theo nam và quý
        /// </summary>
        /// <param name="quy"></param>
        /// <param name="nam"></param>
        /// <returns></returns>
        public List<Tep> GetTepBCTC(int quy, int nam)
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getBCTCNamQuy", nam,quy);
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }


        /// <summary>
        /// Lấy ra tất cả các báo cáo tài chính quý
        /// </summary>
        /// <returns></returns>
        public List<Tep> GetTepBCTCQuy()
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getTepBCTCQuy");
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error COnnection!");
                throw;
            }
            finally {dataReader.Close();}
            
            return list;
        }



        /// <summary>
        /// Lấy ra tất cả các báo cáo tài chính quý theo nam
        /// </summary>
        /// <param name="nam"></param>
        /// <returns></returns>
        public List<Tep> GetTepBCTCQuy(int nam)
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getBCTCQuyByNam", nam);
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }


        /// <summary>
        /// Lấy ra tất cả các báo cáo tài chính quý theo nam và quý
        /// </summary>
        /// <param name="nam"></param>
        /// <param name="quy"></param>
        /// <returns></returns>
        public List<Tep> GetTepBCTCQuy(int nam, int quy)
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getTepBCTCQuyByNamAndQuy", nam, quy);
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }


        /// <summary>
        /// Lay ra tất cả các báo cáo tài chính nam
        /// </summary>
        /// <returns></returns>
        public List<Tep> GetTepBCTCNam()
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getTepBCTCNam");
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }



        /// <summary>
        /// Lấy ra tất cả các báo cáo tài chính nam theo nam
        /// </summary>
        /// <param name="nam"></param>
        /// <returns></returns>
        public List<Tep> GetTepBCTCNam(int nam)
        {
            List<Tep> list = new List<Tep>();
            SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.DMConnnectString, "getTepBCTCNamByNam", nam);
            try
            {
                while (dataReader.Read())
                {
                    Tep tep = new Tep();

                    tep.TenFile = dataReader["TenFile"].ToString();
                    tep.TenBaoCao = dataReader["TenBaoCao"].ToString();
                    tep.Ma = Common.ParseInt32(dataReader["Ma"].ToString());
                    tep.Quy = Common.ParseInt32(dataReader["Quy"].ToString());
                    tep.Nam = Common.ParseInt32(dataReader["Nam"].ToString());
                    tep.IsTN = dataReader["IsTN"] != null ? (bool)dataReader["IsTN"] : false;

                    list.Add(tep);
                }
            }
            catch (Exception)
            {
                Common.Show("Error Connection!");
                throw;
            }
            finally {dataReader.Close();}
            return list;
        }
    }
}
